#ifndef __v3d_defs_h__
#define __v3d_defs_h__

#include "v3d_types.h"

//related to interface 
//windows
enum v3d_window_type
{
	WINDOW_TYPE_GLUT,
	WINDOW_TYPE_WIN32,
	WINDOW_TYPE_X,

};

enum v3d_renderer_type
{
	RENDERER_GL,
	RENDERER_GLES1X,
	RENDERER_GLES2X,
	DIRECTX,

};

//temply here will be moved to new file
#include <iostream>
#include <vector>
using namespace std;
class v3d_object
{

public:
	v3d_object()
	{

	}
	virtual ~v3d_object()
	{

	}

	//both same
	//kept as feeling message_immediate doent make sense in some cases
	virtual void MessageImmediate(int message_id, void *param) = 0;
	virtual void Update(int message_id, void *param) = 0;

	/*
	 *

	static vector<v3d_object *> objectList;
	virtual void BroadcastMessage(int message_id, void *param)
	{
		for(int i = 0; i < v3d_object::objectList.size(); i ++)
			v3d_object::objectList[i]->MessageImmediate(message_id, param);
	}
	 */
};

//message id's and respective param structures
enum
{
	MSG_V3D_OBJECT,
	MSG_V3D_INTERFACE_OBJECT,
	MSG_V3D_RENDERER_OBJECT,

	//interface class messages
	MSG_I_RENDER_START,
	MSG_I_RENDERUPDATE,
	MSG_I_WINDOW_RESIZE,
};

typedef struct
{
	int width,height;
}WINDOW_RESIZE_PARAM;



#include <stdio.h>
#define	LOG		printf


#endif		//__v3d_defs_h__


